import os
import re
from util.llm import http_request

MODEL_NAME = os.getenv('MODEL_NAME', "deepseek-chat")


def remove_markdown_code_block(json_str):
    # 使用正则表达式匹配并移除Markdown代码块标记
    pattern = r'^```json|```$'
    cleaned_json = re.sub(pattern, '', json_str, flags=re.MULTILINE)
    return cleaned_json.strip()


def context_format(ctx: list[dict]):
    """
    格式化上下文对话历史
    Args:
        ctx: 对话历史列表，格式为 [{'user': '用户消息', 'ai': 'AI回复'}, ...]
    Returns:
        格式化后的上下文列表
    """
    if not ctx:  # 如果ctx为None或空列表
        return []
    
    context = []
    for x in ctx:
        if isinstance(x, dict) and 'user' in x and 'ai' in x:
            user = x['user']
            ai = x["ai"]
            context.append({'role': "user", 'content': user})
            context.append({'role': "assistant", 'content': ai})
    return context


async def remove_garbled_characters(content):
    if len(content) == 0:
        return ""
    REMOVE_SYSTEM_PROMPT = """任务：
    以下是一段文本，是使用程序从pdf/word中提取的，可能存在多出换行符、水印、乱码等情况。请帮我将上述多余字符去掉。
    输出要求：
    切记提取后的文本必须和原文保持一致。只需输出文章正文，不要添加任何解释性文字。
    正文：
    {}
    """
    system_prompt = REMOVE_SYSTEM_PROMPT.format(content)
    # r = await http_request("你是一个语言专家", [], system_prompt, model="hunyuan-turbo")
    r = await http_request("你是一个语言专家", [], system_prompt, model=MODEL_NAME)
    return r
